// pages/index/examinationDetail/examinationDetail.js

import {
    GetHightNewsDtl, // 高考资讯详情
} from '../../../api/index'
const WxParse = require('../../../wxParse/wxParse');


Page({

  /**
   * 页面的初始数据
   */
  data: {
    model:{},
    content:'',
    isScroller: false,
        article: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
      console.log(options)
        this._GetHightNewsDtl({id:options.id}, true)
  },

    // 高考资讯详情
    _GetHightNewsDtl:function(data,isLoading) {
        GetHightNewsDtl(data, isLoading).then(res => {
          console.log(res)
          let code = res.code;
          if (code == 200) {
            
              let article = res.data.newsContent.replace(/(\<img|\<p)/gi, function ($0, $1) {
                return {
                    "<img": '<img style="width:100%;height:auto;display:block;" ',
                    "<p": '<p style=" line-height:2em" ',
                    "<article": "<div",
                    "</article": "</div",
                    "<header": "<div",
                    "</header": "</div"
                } [$1];
            });
            this.setData({
                article: article
            })


            // 初始化富文本解析
            WxParse.wxParse('article', 'html', this.data.article, this, 5);

            // 在解析完成后，可以在回调函数中进行相关操作
            setTimeout(() => {
                // 获取解析后的节点数据
                const articleNodes = this.data.article.nodes;

                if (articleNodes && Array.isArray(articleNodes)) {
                    const tableElement = this.findTableElement(articleNodes);
                    console.log(tableElement)
                    if (tableElement) {
                        // 获取页面宽度
                        const pageWidth = wx.getSystemInfoSync().windowWidth;

                        if (tableElement.attr.style) {
                            // 从style属性中提取表格的宽度信息
                            const width = this.getTableWidthFromStyle(tableElement.attr.style);
                            console.log(width)
                            // 判断是否需要横向滑动
                            if (width > pageWidth) {
                                console.log('需要横向滑动');
                                this.setData({
                                    isScroller: true
                                })
                            } else {
                                console.log('不需要横向滑动');
                                this.setData({
                                    isScroller: false
                                })
                            }
                        }
                    } else {
                        console.log('富文本内容中未找到表格元素');
                    }
                } else {
                    console.log('解析后的节点数据为空或不是数组');
                }
            }, 1000); // 在解析完成后延迟执行，确保解析完成

            this.setData({
                model:res.data,
                content:article
            })
           
          } else {
            Toast(res.msg)
          }
        })
      },


    // 从style属性中提取表格的宽度信息
    getTableWidthFromStyle(style) {
        console.log(style)
        const styles = style.map(item => item.trim());
        const widthStyle = styles.find(item => item.startsWith('width:'));
        console.log(widthStyle)
        // 获取'banana'在数组中的位置
        let position = style.indexOf('width:');
        const widthValue = style[position + 1]; // 返回 'banana'
        widthValue.replace(widthValue, 'px')
        if (widthStyle) {
            // const widthValue = widthStyle.split(':')[1].trim();
            const width = parseInt(widthValue);
            return width;
        }

        return 0; // 默认宽度为0
    },


    // 递归函数，用于在多层数组中查找表格元素
    findTableElement(nodes) {
        let that = this;
        for (const node of nodes) {
            if (node.tag === 'table') {
                return node; // 找到表格元素，返回该节点
            } else if (node.nodes && Array.isArray(node.nodes)) {
                const result = that.findTableElement(node.nodes); // 递归查找子节点
                if (result) {
                    return result; // 如果找到表格元素，直接返回
                }
            }
        }
        return null; // 在当前节点及其子节点中未找到表格元素
    },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  onShareTimeline: function (){

},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})